/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.common.datareport.service;

import com.icinfo.cloud.provider.punish.common.datareport.dto.CaseDataReportStageInfoQueryDto;
import com.icinfo.cloud.provider.punish.common.datareport.dto.CaseDataReportStageInfoSaveDto;
import com.icinfo.cloud.provider.punish.common.datareport.vo.CaseDataReportStageInfoVo;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;

/**
 * 描述: 案件数据上报阶段信息 case_data_report_stage_info 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年04月19日
 */
public interface ICaseDataReportStageInfoService extends BaseService {



    /**
     * 描述：保存案件数据上报阶段信息
     *
     * @param saveDto {@link CaseDataReportStageInfoSaveDto}
     * @return String 保存时出现的错误信息
     * @author xiangyuyu
     * @date 2022-04-19 13:41
     */
    String saveCaseDataReportStageInfo(CaseDataReportStageInfoSaveDto saveDto);


    /**
     * 描述：获取案件数据上报阶段信息
     *
     * @param queryDto {@link CaseDataReportStageInfoQueryDto}
     * @return {@link List<CaseDataReportStageInfoVo>} 案件数据上报阶段信息
     * @author xiangyuyu
     * @date 2022-04-19 13:41
     */
    List<CaseDataReportStageInfoVo> getCaseDataReportStageInfoList(CaseDataReportStageInfoQueryDto queryDto);


    /**
     * 描述：初始化案件上报阶段信息
     *
     * @param caseId  案件id
     * @param partyId 当事人id
     * @author xiangyuyu
     * @date 2022-04-19 16:08
     */
    void initCaseReportStageInfo(String caseId,String partyId);

    /**
     * 描述：校验案件指定阶段数据是否已经上报完成
     *
     * @param reportStageTag 上报阶段标识
     * @param caseId         案件id
     * @param partyId        当事人id
     * @return true-是/false-否
     * @author xiangyuyu
     * @date 2022-04-19 19:22
     */
    boolean checkStageInfoIsReportSuccess(String reportStageTag, String caseId, String partyId);

    /**
     * 描述：校验是否需要上报数据
     *
     * @param reportStageTag 上报阶段标识
     * @param caseId         案件id
     * @param partyId        当事人id
     * @return true-是/false-否
     * @author xiangyuyu
     * @date 2022-04-19 19:22
     */
    boolean checkIsShouldReport(String reportStageTag, String caseId, String partyId);

    /**
     * 描述：上报动作结束后续操作
     *
     * @param caseId          案件id
     * @param isReportSuccess 是否上报成功
     * @param reportStageTag  上报阶段标识
     * @param failReason      失败原因
     * @param partyId         当事人id
     * @return
     * @author xiangyuyu
     * @date 2022-04-19 19:51
     */
    void dealAfterReport(String caseId, boolean isReportSuccess, String reportStageTag, String failReason,String partyId);
}